package org.hilo.boot.scaffold;

/**
 * 标准组件生成器接口
 * 
 * @author zollty
 * @since 2020年7月27日
 */
public interface PluginGenerator {
    
    /**
     * 主生成器 将项目的基本信息告知 子组件生成器
     */
    void config(String groupId, String artifactId, String basePackage, 
            boolean separateBizApp, String copyFileToPath, String starterProjectPath, String bizProjectPath);
    
    /**
     * 主生成器 调用此方法执行组件的资源处理及合并操作
     */
    void prepareAndMergeSource();

    /**
     * 将文本配置，添加到application-dev.yml配置中
     */
    String addDevYamlConfig();
    
    /**
     * 将组件依赖，添加到父pom.xml的&lt;dependencyManagement&gt;&lt;dependencies&gt;标签中
     */
    String addParentPomManagementDependency();
    
    /**
     * 将文本配置，添加到starter项目的pom.xml的dependencies标签中，
     * 注意：本方法和addBizPomManagementDependency二选一，切勿重复添加
     */
    String addStarterPomManagementDependency();
    
    /**
     * 将文本配置，添加到biz项目pom.xml的dependencies标签中（若为大锅型项目，则添加到app starter项目中），
     * 即 本方法和addStarterPomManagementDependency二选一，切勿重复添加
     */
    String addBizPomManagementDependency();
    
    /**
     * 执行完后清理资源
     */
    void clean();
}
